package com.yang.auth.constant;

/**
 * redis生成key的常量类
 */
public class RedisKeyConstant {

    /**
     * 项目名称
     */
    private final static String LITTLE_RED_BOOK_PREFIX = "little-red-book:";
    /**
     * 验证码前缀
     */
    private final static String VERIFICATION_CODE_PREFIX = "verification-code:";
    /**
     * 小红书id生成器的后缀
     */
    private final static String LITTLE_RED_BOOK_ID_GENERATOR_SUFFIX = "little_red_book_id_generator";
    /**
     * 用户角色的前缀
     */
    private final static String USER_ROLE_PREFIX = "user:role:";
    /**
     * 角色对应的权限key前缀
     */
    private final static String ROLE_PERMISSION_PREFIX = "role:permission:";
    /**
     * 分布式情况下加载权限的锁，即多个下相同的服务只有一个能加载成功
     */
    private final static String PERMISSION_Loader_LOCK = "permission:loader:lock";



    /**
     * 根据手机号生成验证码的key
     * @param phone 手机号
     * @return  小红书字面量 + 验证码字面量 + 手机号   ->  作为key
     */
    public static String getVerificationCodeKey(String phone) {
        return LITTLE_RED_BOOK_PREFIX + VERIFICATION_CODE_PREFIX + phone;
    }
    /**
     * 根据手机号生成redis中存储此人角色信息的key
     * @param phone
     * @return
     */
    public static String getUserRoleKey(String phone) {
        return LITTLE_RED_BOOK_PREFIX + USER_ROLE_PREFIX + phone;
    }
    /**
     * 获取小红书唯一id生成器的key
     * @return
     */
    public static String getLittleRedBookIdGeneratorKey() {
        return LITTLE_RED_BOOK_PREFIX + LITTLE_RED_BOOK_ID_GENERATOR_SUFFIX;
    }
    /**
     * 生成角色权限对应的key
     * @return
     */
    public static String getRolePermissionKey(Long roleId) {
        return LITTLE_RED_BOOK_PREFIX + ROLE_PERMISSION_PREFIX + roleId;
    }
    /**
     * 生成权限加载锁的key
     * @return
     */
    public static String getPermissionLoaderLockKey() {
        return LITTLE_RED_BOOK_PREFIX + PERMISSION_Loader_LOCK;
    }




}
